// 封装各种逻辑函数方法
//  1.先完成函数的架子(参数+返回值)
//  2.实现核心逻辑

import { ref, computed, onUnmounted } from 'vue'
import { useIntervalFn } from '@vueuse/core'
import dayjs from 'dayjs'
export function useWindowScroll () {
  // 1.y是一个响应式数据
  //   2.返回的是一个对象
  const y = ref(0)
  // 核心逻辑:在滚动事件中不断拿到距离顶部的像素值
  window.addEventListener('scroll', () => {
    // 获取距离顶部的像素值
    const scrollTop = document.documentElement.scrollTop
    y.value = scrollTop
  })
  return {
    y
  }
}
// 封装一个倒计时函数
function useCountDown () {
  const time = ref(0)
  // 格式化操作
  // xx分xx秒  dayjs  unix() 处理成秒  format('mm分ss秒') 格式化方法
  // 每个一秒钟 执行一下your function
  const formatTime = computed(() => {
    return dayjs.unix(time.value).format('mm分ss秒')
  })
  const { pause, resume } = useIntervalFn(() => {
    /* your function */
    if (time.value === 1) {
      stop()
    }
    time.value--
  }, 1000)
  // 开始 初始值放到这里更加灵活 可以不依赖必须在setup中调用  在异步请求之后可以手动调用start开启倒计时
  function start (count) {
    // 先初始化
    time.value = count
    // 开始倒计时
    resume()
  }
  // 暂停
  function stop () {
    pause()
  }
  // 组件卸载时停止
  onUnmounted(() => {
    pause()
  })
  return {
    time,
    start,
    stop,
    formatTime
  }
}
export default useCountDown
